Multi-resolution RiOMar data

Multi-resolution RiOMar data#

!pip install xdggs
!pip install healpy
!pip install -U zarr==2.18.4
!pip install numcodecs==0.13.1
!pip install -U xarray
Requirement already satisfied: xdggs in /srv/conda/envs/notebook/lib/python3.12/site-packages (0.1.2.dev9+gb57dfb9)
Requirement already satisfied: xarray in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (2025.1.1)
Requirement already satisfied: cdshealpix in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.7.1)
Requirement already satisfied: h3ronpy in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.22.0)
Requirement already satisfied: typing-extensions in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (4.12.2)
Requirement already satisfied: lonboard>=0.9.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.9.3)
Requirement already satisfied: pyproj>=3.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (3.6.1)
Requirement already satisfied: matplotlib in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (3.9.2)
Requirement already satisfied: arro3-core>=0.4.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (0.4.5)
Requirement already satisfied: pooch in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xdggs) (1.8.2)
Requirement already satisfied: anywidget<0.10.0,>=0.9.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (0.9.13)
Requirement already satisfied: geopandas>=0.13 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (1.0.1)
Requirement already satisfied: palettable<4.0.0,>=3.3.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (3.3.3)
Requirement already satisfied: pandas<3,>=2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (2.2.2)
Requirement already satisfied: pyarrow>=14.0.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (17.0.0)
Requirement already satisfied: shapely<3,>=2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from lonboard>=0.9.3->xdggs) (2.0.5)
Requirement already satisfied: contourpy>=1.0.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (1.2.1)
Requirement already satisfied: cycler>=0.10 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (4.53.1)
Requirement already satisfied: kiwisolver>=1.3.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (1.4.5)
Requirement already satisfied: numpy>=1.23 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (1.26.4)
Requirement already satisfied: packaging>=20.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (24.1)
Requirement already satisfied: pillow>=8 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (10.4.0)
Requirement already satisfied: pyparsing>=2.3.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from matplotlib->xdggs) (2.8.2)
Requirement already satisfied: certifi in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pyproj>=3.3->xdggs) (2024.7.4)
Requirement already satisfied: astropy in /srv/conda/envs/notebook/lib/python3.12/site-packages (from cdshealpix->xdggs) (6.1.2)
Requirement already satisfied: platformdirs>=2.5.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pooch->xdggs) (4.2.2)
Requirement already satisfied: requests>=2.19.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pooch->xdggs) (2.32.3)
Requirement already satisfied: ipywidgets>=7.6.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (8.1.3)
Requirement already satisfied: psygnal>=0.8.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.11.1)
Requirement already satisfied: pyogrio>=0.7.2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from geopandas>=0.13->lonboard>=0.9.3->xdggs) (0.9.0)
Requirement already satisfied: pytz>=2020.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas<3,>=2->lonboard>=0.9.3->xdggs) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas<3,>=2->lonboard>=0.9.3->xdggs) (2024.1)
Requirement already satisfied: six>=1.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib->xdggs) (1.16.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from requests>=2.19.0->pooch->xdggs) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from requests>=2.19.0->pooch->xdggs) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from requests>=2.19.0->pooch->xdggs) (1.26.19)
Requirement already satisfied: pyerfa>=2.0.1.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->cdshealpix->xdggs) (2.0.1.4)
Requirement already satisfied: astropy-iers-data>=0.2024.7.1.0.34.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->cdshealpix->xdggs) (0.2024.8.5.0.32.23)
Requirement already satisfied: PyYAML>=3.13 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->cdshealpix->xdggs) (6.0.2)
Requirement already satisfied: comm>=0.1.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.2.2)
Requirement already satisfied: ipython>=6.1.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (8.17.2)
Requirement already satisfied: traitlets>=4.3.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (5.14.3)
Requirement already satisfied: widgetsnbextension~=4.0.11 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (4.0.11)
Requirement already satisfied: jupyterlab-widgets~=3.0.11 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (3.0.11)
Requirement already satisfied: decorator in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (5.1.1)
Requirement already satisfied: jedi>=0.16 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.19.1)
Requirement already satisfied: matplotlib-inline in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.1.7)
Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (3.0.38)
Requirement already satisfied: pygments>=2.4.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (2.18.0)
Requirement already satisfied: stack-data in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.6.2)
Requirement already satisfied: pexpect>4.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (4.9.0)
Requirement already satisfied: parso<0.9.0,>=0.8.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.8.4)
Requirement already satisfied: ptyprocess>=0.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.7.0)
Requirement already satisfied: wcwidth in /srv/conda/envs/notebook/lib/python3.12/site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.2.13)
Requirement already satisfied: executing>=1.2.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (2.0.1)
Requirement already satisfied: asttokens>=2.1.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (2.4.1)
Requirement already satisfied: pure-eval in /srv/conda/envs/notebook/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard>=0.9.3->xdggs) (0.2.3)
Requirement already satisfied: healpy in /srv/conda/envs/notebook/lib/python3.12/site-packages (1.18.0)
Requirement already satisfied: numpy>=1.19 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from healpy) (1.26.4)
Requirement already satisfied: astropy in /srv/conda/envs/notebook/lib/python3.12/site-packages (from healpy) (6.1.2)
Requirement already satisfied: pyerfa>=2.0.1.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (2.0.1.4)
Requirement already satisfied: astropy-iers-data>=0.2024.7.1.0.34.3 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (0.2024.8.5.0.32.23)
Requirement already satisfied: PyYAML>=3.13 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (6.0.2)
Requirement already satisfied: packaging>=19.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from astropy->healpy) (24.1)
Requirement already satisfied: zarr==2.18.4 in /srv/conda/envs/notebook/lib/python3.12/site-packages (2.18.4)
Requirement already satisfied: asciitree in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (0.3.3)
Requirement already satisfied: numpy>=1.24 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (1.26.4)
Requirement already satisfied: fasteners in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (0.17.3)
Requirement already satisfied: numcodecs!=0.14.0,!=0.14.1,>=0.10.0 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from zarr==2.18.4) (0.13.1)
Requirement already satisfied: numcodecs==0.13.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (0.13.1)
Requirement already satisfied: numpy>=1.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from numcodecs==0.13.1) (1.26.4)
Requirement already satisfied: xarray in /srv/conda/envs/notebook/lib/python3.12/site-packages (2025.1.1)
Requirement already satisfied: numpy>=1.24 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xarray) (1.26.4)
Requirement already satisfied: packaging>=23.2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xarray) (24.1)
Requirement already satisfied: pandas>=2.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from xarray) (2.2.2)
Requirement already satisfied: python-dateutil>=2.8.2 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas>=2.1->xarray) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas>=2.1->xarray) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from pandas>=2.1->xarray) (2024.1)
Requirement already satisfied: six>=1.5 in /srv/conda/envs/notebook/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=2.1->xarray) (1.16.0)
import warnings
import healpy as hp
#import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
import xdggs
#import fsspec

warnings.filterwarnings("ignore")
xr.set_options(display_max_rows=27)
<xarray.core.options.set_options at 0x7cc558f13530>
url_1 = "https://data-fair2adapt.ifremer.fr/riomar/small_healpix_14.zarr"
url_2 = "https://data-fair2adapt.ifremer.fr/riomar/small_healpix_13.zarr"
url_3 = "https://data-fair2adapt.ifremer.fr/riomar/small_healpix.zarr"
ds1 = xr.open_zarr(url_1).pipe(xdggs.decode)
ds1
<xarray.Dataset> Size: 6GB
Dimensions:       (cells: 3894803, s_rho: 40, time_counter: 5)
Coordinates:
  * cell_ids      (cells) uint64 31MB dask.array<chunksize=(121713,), meta=np.ndarray>
    latitude      (cells) float64 31MB dask.array<chunksize=(121713,), meta=np.ndarray>
    longitude     (cells) float64 31MB dask.array<chunksize=(121713,), meta=np.ndarray>
    resolution    float64 8B ...
  * s_rho         (s_rho) float32 160B -0.9875 -0.9625 ... -0.0375 -0.0125
  * time_counter  (time_counter) datetime64[ns] 40B 2004-01-01T00:58:30 ... 2...
    time_instant  (time_counter) datetime64[ns] 40B dask.array<chunksize=(1,), meta=np.ndarray>
Dimensions without coordinates: cells
Data variables:
    ocean_mask    (cells) float64 31MB dask.array<chunksize=(3894803,), meta=np.ndarray>
    temp          (time_counter, s_rho, cells) float64 6GB dask.array<chunksize=(1, 40, 3894803), meta=np.ndarray>
Indexes:
    cell_ids  HealpixIndex(level=14, indexing_scheme=nested)
Attributes:
    grid_type:  healpix
    lat:        0
    level:      14
    lon:        0
    nside:      16384
    rot_lat:    0
    rot_lon:    0
ds2 =  xr.open_zarr(url_2).pipe(xdggs.decode)
ds2
<xarray.Dataset> Size: 2GB
Dimensions:       (cells: 971899, s_rho: 40, time_counter: 5)
Coordinates:
  * cell_ids      (cells) uint64 8MB dask.array<chunksize=(60744,), meta=np.ndarray>
    latitude      (cells) float64 8MB dask.array<chunksize=(60744,), meta=np.ndarray>
    longitude     (cells) float64 8MB dask.array<chunksize=(60744,), meta=np.ndarray>
    resolution    float64 8B ...
  * s_rho         (s_rho) float32 160B -0.9875 -0.9625 ... -0.0375 -0.0125
  * time_counter  (time_counter) datetime64[ns] 40B 2004-01-01T00:58:30 ... 2...
    time_instant  (time_counter) datetime64[ns] 40B dask.array<chunksize=(1,), meta=np.ndarray>
Dimensions without coordinates: cells
Data variables:
    ocean_mask    (cells) float64 8MB dask.array<chunksize=(971899,), meta=np.ndarray>
    temp          (time_counter, s_rho, cells) float64 2GB dask.array<chunksize=(1, 40, 971899), meta=np.ndarray>
Indexes:
    cell_ids  HealpixIndex(level=13, indexing_scheme=nested)
Attributes:
    grid_type:  healpix
    lat:        0
    level:      13
    lon:        0
    nside:      8192
    rot_lat:    0
    rot_lon:    0
ds3 =  xr.open_zarr(url_3).pipe(xdggs.decode)
ds3
<xarray.Dataset> Size: 395MB
Dimensions:       (cells: 242076, s_rho: 40, time_counter: 5)
Coordinates:
  * cell_ids      (cells) uint64 2MB dask.array<chunksize=(30260,), meta=np.ndarray>
    latitude      (cells) float64 2MB dask.array<chunksize=(30260,), meta=np.ndarray>
    longitude     (cells) float64 2MB dask.array<chunksize=(30260,), meta=np.ndarray>
    resolution    float64 8B ...
  * s_rho         (s_rho) float32 160B -0.9875 -0.9625 ... -0.0375 -0.0125
  * time_counter  (time_counter) datetime64[ns] 40B 2004-01-01T00:58:30 ... 2...
    time_instant  (time_counter) datetime64[ns] 40B dask.array<chunksize=(1,), meta=np.ndarray>
Dimensions without coordinates: cells
Data variables:
    ocean_mask    (cells) float64 2MB dask.array<chunksize=(242076,), meta=np.ndarray>
    temp          (time_counter, s_rho, cells) float64 387MB dask.array<chunksize=(1, 40, 242076), meta=np.ndarray>
Indexes:
    cell_ids  HealpixIndex(level=12, indexing_scheme=nested)
Attributes:
    grid_type:  healpix
    lat:        0
    level:      12
    lon:        0
    nside:      4096
    rot_lat:    0
    rot_lon:    0

Create the DataTree#

dt = xr.DataTree.from_dict({"/" + str(ds1.attrs["level"]): ds1, "/" + str(ds2.attrs["level"]): ds2, "/" + str(ds3.attrs["level"]): ds3})  # create root node
dt
<xarray.DatasetView> Size: 0B
Dimensions:  ()
Data variables:
    *empty*

Define functions#

def create_arrow_table(polygons, arr, coords=None):
    from arro3.core import Array, ChunkedArray, Schema, Table

    if coords is None:
        coords = ["latitude", "longitude"]

    array = Array.from_arrow(polygons)
    name = arr.name or "data"
    arrow_arrays = {
        "geometry": array,
        "cell_ids": ChunkedArray([Array.from_numpy(arr.coords["cell_ids"])]),
        name: ChunkedArray([Array.from_numpy(arr.data)]),
    } | {
        coord: ChunkedArray([Array.from_numpy(arr.coords[coord].data)])
        for coord in coords
        if coord in arr.coords
    }

    fields = [array.field.with_name(name) for name, array in arrow_arrays.items()]
    schema = Schema(fields)

    return Table.from_arrays(list(arrow_arrays.values()), schema=schema)


def normalize(var, center=None):
    from matplotlib.colors import CenteredNorm, Normalize

    if center is None:
        vmin = var.min(skipna=True)
        vmax = var.max(skipna=True)
        normalizer = Normalize(vmin=vmin, vmax=vmax)
    else:
        halfrange = np.abs(var - center).max(skipna=True)
        normalizer = CenteredNorm(vcenter=center, halfrange=halfrange)

    return normalizer(var.data)


def explore_layer(
    arr,
    cell_dim="cells",
    cmap="viridis",
    center=None,
    alpha=None,
):
    from lonboard import SolidPolygonLayer
    from lonboard.colormap import apply_continuous_cmap
    from matplotlib import colormaps

    if len(arr.dims) != 1 or cell_dim not in arr.dims:
        raise ValueError(
            f"exploration only works with a single dimension ('{cell_dim}')"
        )

    cell_ids = arr.dggs.coord.data
    grid_info = arr.dggs.grid_info

    polygons = grid_info.cell_boundaries(cell_ids, backend="geoarrow")

    normalized_data = normalize(arr.variable, center=center)

    colormap = colormaps[cmap]
    colors = apply_continuous_cmap(normalized_data, colormap, alpha=alpha)

    table = create_arrow_table(polygons, arr)
    layer = SolidPolygonLayer(table=table, filled=True, get_fill_color=colors)

    return layer
import lonboard
ds_12 = dt["12"].ds
ds_12 = ds_12.isel(time_counter=0, s_rho=0).compute().dropna(dim='cells').pipe(xdggs.decode)
ds_12
<xarray.Dataset> Size: 6MB
Dimensions:       (cells: 156410)
Coordinates:
  * cell_ids      (cells) uint64 1MB 11451631 11451635 ... 57954657 57954658
    latitude      (cells) float64 1MB 49.25 49.25 49.26 ... 50.83 50.84 50.84
    longitude     (cells) float64 1MB 0.4251 0.4767 0.4768 ... -7.884 -7.91
    resolution    float64 8B 0.0002498
    s_rho         float32 4B -0.9875
    time_counter  datetime64[ns] 8B 2004-01-01T00:58:30
    time_instant  datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
    ocean_mask    (cells) float64 1MB 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
    temp          (cells) float64 1MB 13.35 12.86 12.63 ... 8.407 7.52 7.486
Indexes:
    cell_ids  HealpixIndex(level=12, indexing_scheme=nested)
Attributes:
    grid_type:  healpix
    lat:        0
    level:      12
    lon:        0
    nside:      4096
    rot_lat:    0
    rot_lon:    0
ds_12.temp.dggs.explore(alpha=1)
import lonboard
ds_14 = dt["14"].ds
ds_14 = ds_14.isel(time_counter=0, s_rho=0).compute().dropna(dim='cells').pipe(xdggs.decode)
ds_14
<xarray.Dataset> Size: 100MB
Dimensions:       (cells: 2508887)
Coordinates:
  * cell_ids      (cells) uint64 20MB 183222103 183222107 ... 927275362
    latitude      (cells) float64 20MB 49.27 49.27 49.27 ... 50.86 50.86 50.86
    longitude     (cells) float64 20MB 0.09343 0.08055 0.08699 ... -7.971 -7.978
    resolution    float64 8B 6.246e-05
    s_rho         float32 4B -0.9875
    time_counter  datetime64[ns] 8B 2004-01-01T00:58:30
    time_instant  datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
    ocean_mask    (cells) float64 20MB 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
    temp          (cells) float64 20MB 10.11 10.03 10.07 ... 6.252 5.662 6.062
Indexes:
    cell_ids  HealpixIndex(level=14, indexing_scheme=nested)
Attributes:
    grid_type:  healpix
    lat:        0
    level:      14
    lon:        0
    nside:      16384
    rot_lat:    0
    rot_lon:    0
ds_14.temp.dggs.explore(alpha=0.8)
# (ds_12.longitude > -7.96) & (ds_12.longitude <-4.9) &
ds_12_small = ds_12.where(  (ds_12.latitude <46.5))
ds_12_small
<xarray.Dataset> Size: 6MB
Dimensions:       (cells: 156410)
Coordinates:
  * cell_ids      (cells) uint64 1MB 11451631 11451635 ... 57954657 57954658
    latitude      (cells) float64 1MB 49.25 49.25 49.26 ... 50.83 50.84 50.84
    longitude     (cells) float64 1MB 0.4251 0.4767 0.4768 ... -7.884 -7.91
    resolution    float64 8B 0.0002498
    s_rho         float32 4B -0.9875
    time_counter  datetime64[ns] 8B 2004-01-01T00:58:30
    time_instant  datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
    ocean_mask    (cells) float64 1MB nan nan nan nan nan ... nan nan nan nan
    temp          (cells) float64 1MB nan nan nan nan nan ... nan nan nan nan
Indexes:
    cell_ids  HealpixIndex(level=12, indexing_scheme=nested)
Attributes:
    grid_type:  healpix
    lat:        0
    level:      12
    lon:        0
    nside:      4096
    rot_lat:    0
    rot_lon:    0
ds_12_small.temp.dggs.explore(alpha=0.8)
ds_14_small = ds_14.where((ds_14.latitude >=46.5) )
ds_14_small
<xarray.Dataset> Size: 100MB
Dimensions:       (cells: 2508887)
Coordinates:
  * cell_ids      (cells) uint64 20MB 183222103 183222107 ... 927275362
    latitude      (cells) float64 20MB 49.27 49.27 49.27 ... 50.86 50.86 50.86
    longitude     (cells) float64 20MB 0.09343 0.08055 0.08699 ... -7.971 -7.978
    resolution    float64 8B 6.246e-05
    s_rho         float32 4B -0.9875
    time_counter  datetime64[ns] 8B 2004-01-01T00:58:30
    time_instant  datetime64[ns] 8B 2004-01-01T00:58:30
Dimensions without coordinates: cells
Data variables:
    ocean_mask    (cells) float64 20MB 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
    temp          (cells) float64 20MB 10.11 10.03 10.07 ... 6.252 5.662 6.062
Indexes:
    cell_ids  HealpixIndex(level=14, indexing_scheme=nested)
Attributes:
    grid_type:  healpix
    lat:        0
    level:      14
    lon:        0
    nside:      16384
    rot_lat:    0
    rot_lon:    0
ds_14_small.temp.dggs.explore(alpha=0.8)
lonboard.Map(
    [
        explore_layer(
            ds_12_small.temp,
            alpha=1,
        ),
        explore_layer(ds_14_small.temp, alpha=1),
    ]
)